package lanbda;

import jdk.internal.org.objectweb.asm.tree.MultiANewArrayInsnNode;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后推出了一个新的特性  lanbda表达式
 * lambda表达式可以让Java编写面向对象函数式编程
 * 最直观的感受就是可以更精简的定义匿名内部类
 * 语法：
 * （参数列表）->{
 *     方法体
 * }
 * 使用lambda表达式创建匿名内部类时实现的接口中只能有一个抽象方法
 */
public class LambdaDemo {

    public static void main(String[] args) {
        File file = new File(".");
        FileFilter fileFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().contains(".");
            }
        };

//        lambda表达式
        FileFilter filter = (File pathname)->{
            return pathname.getName().contains(".");
        };

        //方法参数列表中的参数类型可以不写 如果只有一个参数  括号也可以不写
        FileFilter filter1 = pathname -> {
            return pathname.getName().contains(".");
        };

        //如果方法体中只有一句代码  那么方法体{}可以不写  如若这句话有return关键字  那么return也可以hulue
        FileFilter filter2 = pathname -> pathname.getName().startsWith(".");

        //获取当前目录下名字以“。”开头的子项
        File dir = new File(".");
        File[] subs = dir.listFiles(pathname -> pathname.getName().startsWith("."));
    }

}
